package com.lhd.tool;

import java.util.Random;

import org.apache.commons.lang3.RandomStringUtils;
/**
*
* <p>生成number样式的字符串
*
* @author MapLover
* @since 2020.09
*/
public class NumberTool {
	
	
	/**
	 * @param length 位数
	 * @return 随机数字字符
	 */
	public String getRandomNumber(int length) {
		if (length>8){
			return RandomStringUtils.randomNumeric(length-2);
		}
		else
			return RandomStringUtils.randomNumeric(length);

		
	}
	

	public String getRandomCCY() {

		return RandomStringUtils.randomNumeric(2);
	}
	
	/**
	 * @param scale 小数位数
	 * @return 随机小数
	 */
	public String getRandomRate(int scale) {

		return "0."+RandomStringUtils.randomNumeric(scale);
	}

	public String getRandomAmt(int length, int scale) {
		if (scale == 0){
			return RandomStringUtils.randomNumeric(2) ;

		}else {
			return RandomStringUtils.randomNumeric(2) + '.' + RandomStringUtils.randomNumeric(scale);
		}

	}

	public String getGaussRandomNumber(int expectValue) {

		Random r = new Random();

		Double d = Math.abs(r.nextGaussian() * Math.sqrt(80) + expectValue);
		Double d2 = 0.0;// Math.abs(r.nextGaussian() * Math.sqrt(20) + 20);

		return String.valueOf(d.intValue() + d2.intValue());
	}

	public String getPossionProbability(int k, double lamda) {
		double c = Math.exp(-lamda), sum = 1;
		for (int i = 1; i <= k; i++) {
			sum *= lamda / i;
		}
		return String.valueOf(sum * c);
	}

	/**
	 * @param minLengthInclusive 最小值
	 * @param maxLengthExclusive 最大值
	 * @return 一个随机字符串，其长度介于包含最小值和最大值之间,将从数字字符集中选择字符
	 */
	public String getRandomNumber2(int minLengthInclusive, int maxLengthExclusive) {
		return RandomStringUtils.randomNumeric(minLengthInclusive, maxLengthExclusive);
	}
	

	public String getPhoneNumber() {
		return "1" + RandomStringUtils.randomNumeric(10);
	}

}
